package com.xbai.creation.factorymethod;

import com.xbai.creation.factorymethod.factory.Dialog;
import com.xbai.creation.factorymethod.factory.HtmlDialog;
import com.xbai.creation.factorymethod.factory.WindowsDialog;

/**
 * 客户端代码
 */
public class Demo {
    private static Dialog dialog;

    public static void main(String[] args) {
        configure();
        runBusinessLogic();
    }

    /**
     * 通过通过配置或者环境来选择具体的工厂
     */
    static void configure() {
        if (System.getProperty("os.name").equals("Windows 10")) {
            dialog = new WindowsDialog();
        } else {
            dialog = new HtmlDialog();
        }
    }

    /**
     * 所有的客户端代码都应该通过抽象接口与工厂和产品一起工作。
     * 这样，他就不在乎与哪个工厂合作，以及返回什么样的产品
     */
    static void runBusinessLogic() {
        dialog.renderWindow();
    }
}